# lowcode-editor-server 基于 Dockerfile 构建 image

# 指定基础镜像 从 node16 构建；alpine 版本是体量更小的liux发行版，可以缩小镜像体积
FROM node:16-alpine
# 创建对应的文件夹，作为项目运行的位置；RUN 是在 docker build时运行
RUN mkdir -p /usr/src/app
# 指定工作区，后面运行任何命令都是在这个工作区完成的
WORKDIR /usr/src/app
# 保证只有 package.json 文件变动的时候才会执行 npm install 操作
COPY package.json package-lock.json /usr/src/app/
RUN npm install --registry https://registry.npmmirror.com/ --force
# 从本地拷贝对应的文件到工作区；这里把普通代码文件和package.json 文件做成两部分，是因为不想修改代码会影响 npm install 的重新构建
COPY . /usr/src/app/
# 设置时区
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
# 运行启动项目相关命令
# RUN npm run tsc
# 告知当前 Docker image 暴露的是 3000 端口
EXPOSE 3000
# 执行启动命令，一个 Dockerfile 只能有一个
# 必须是个阻塞控制台的程序，方便在 docker logs 输出日志
CMD npm run prd-dev && npx pm2 log